package ace.cmp.data.api;

import java.util.List;
import java.util.Map;

/**
 * @author caspar
 * @date 2023/9/9 11:10 管理端服务
 * 1、实现常用的管理接口功能：新增、修改、删除、明细、搜索
 */
public interface DataManager<TEntity, TId, TSearchQuery, TPageResult, TPage> {
  TId save(TEntity entity, Boolean ullFieldMappedFlag);

  TId add(TEntity entity, Boolean ullFieldMappedFlag);

  TId modify(TEntity entity, Boolean ullFieldMappedFlag);

  Boolean remove(List<TId> ids);

  Boolean removeLogic(List<TId> ids);

  TEntity getById(TId id);

  List<TEntity> getListByIdIn(List<TId> ids);

  Map<TId, TEntity> getMapByIdIn(List<TId> ids);

  TPageResult search(TSearchQuery query, TPage pageable);

  Boolean hasIdValue(TEntity entity);

  Class<TEntity> getEntityClass();

  Class<TId> getIdClass();
}
